// import { deepClone } from '@/utils';
import type { FormInstance, FormItemProp } from 'element-plus';
import { clone } from '@pureadmin/utils';
import { ref } from 'vue';

const isDisabled = ref(false);
const timer = ref(null);
const text = ref('');

export const useVerifyCode = () => {
  const start = async (formEl: FormInstance | undefined, props: FormItemProp, time = 60) => {
    if (!formEl) return;
    const initTime = clone(time, true);
    // const initTime = deepClone(time);
    await formEl.validateField(props, (isValid) => {
      if (isValid) {
        clearInterval(timer.value);
        isDisabled.value = true;
        text.value = `${time}`;
        timer.value = setInterval(() => {
          if (time > 0) {
            time -= 1;
            text.value = `${time}`;
          } else {
            text.value = '';
            isDisabled.value = false;
            clearInterval(timer.value);
            time = initTime;
          }
        }, 1000);
      }
    });
  };

  const end = () => {
    text.value = '';
    isDisabled.value = false;
    clearInterval(timer.value);
  };

  return {
    isDisabled,
    timer,
    text,
    start,
    end
  };
};
